package model.proxy
{
	import model.AnneeUniversitaire;
	import model.Semaine;
	import model.Jour;
	
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.remoting.mxml.RemoteObject;
	
	import org.puremvc.as3.interfaces.IProxy;
	import org.puremvc.as3.patterns.proxy.Proxy; 
	
	public class AnneeUniversitaireProxy extends Proxy implements IProxy 
	{ 
		
		public static const NAME : String = 'AnneeUniversitaireProxy';		
		public static const LISTE_ANNEES_UNIVERSITAIRE_OBTENUE : String = "ListeAnneesUniversitaireObtenue";
		public static const LISTE_JOURS_FERIES_ANNEE_UNIV_OBTENUE : String = "ListeJoursFeriesAnneeUnivObtenue";
		private var remoteObjectAnneeUniversitaire : RemoteObject = null;
		private var remoteObjectJoursFeries : RemoteObject = null;
		
		/** 
		 * Constructor 
		 * We create the table logins and insert a login by default to test 
		 */ 
		public function AnneeUniversitaireProxy(data:Object=null) 
		{ 
			super(NAME, data);
			remoteObjectAnneeUniversitaire = new RemoteObject();
			remoteObjectAnneeUniversitaire.destination = "RemoteServiceAnneeUniversitaire";
			remoteObjectAnneeUniversitaire.source = "RemoteServiceAnneeUniversitaire";
			remoteObjectAnneeUniversitaire.endpoint = ApplicationFacade.SERVEUR;
			remoteObjectJoursFeries = new RemoteObject();
			remoteObjectJoursFeries.destination = "RemoteServiceAnneeUniversitaire";
			remoteObjectJoursFeries.source = "RemoteServiceAnneeUniversitaire";
			remoteObjectJoursFeries.endpoint = ApplicationFacade.SERVEUR;
		} 

 		public function validerAjoutAnneeUniversitaire(anneeUniversitaire:AnneeUniversitaire):void
		{
			remoteObjectAnneeUniversitaire.addEventListener(ResultEvent.RESULT, listeAnneesUniversitaireObtenue);
			remoteObjectAnneeUniversitaire.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObjectAnneeUniversitaire.ajouterAnneeUniversitaire(anneeUniversitaire);
			trace("Ajout");
		}
		
		 public function validerModifAnneeUniversitaire(anneeUniversitaire:AnneeUniversitaire,jours:Array):void
		{
			remoteObjectAnneeUniversitaire.addEventListener(ResultEvent.RESULT, listeAnneesUniversitaireObtenue);
			remoteObjectAnneeUniversitaire.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObjectAnneeUniversitaire.modifierAnneeUniversitaire(anneeUniversitaire,jours);
			trace("Modification");
		}
 		
 		public function obtenirListeAnneesUniversitaire() : void 
 		{
 			remoteObjectAnneeUniversitaire.addEventListener(ResultEvent.RESULT, listeAnneesUniversitaireObtenue);
			remoteObjectAnneeUniversitaire.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObjectAnneeUniversitaire.obtenirListeAnneesUniversitaire();
 		}
 		
 		public function obtenirListeJoursFeriesAnneeUniv(anneeUniversitaire:AnneeUniversitaire) : void 
 		{
 			remoteObjectJoursFeries.addEventListener(ResultEvent.RESULT, listeJoursFeriesAnneeUnivObtenue);
			remoteObjectJoursFeries.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObjectJoursFeries.obtenirListeJoursFeries(anneeUniversitaire);
 		}
 		
 		private function listeAnneesUniversitaireObtenue(event:ResultEvent):void
		{
			remoteObjectAnneeUniversitaire.removeEventListener(ResultEvent.RESULT, listeAnneesUniversitaireObtenue);
			var listeAnneesUniversitaire:Array = (event.result as Array)
			sendNotification(LISTE_ANNEES_UNIVERSITAIRE_OBTENUE, listeAnneesUniversitaire);
		}
		
		
		private function listeJoursFeriesAnneeUnivObtenue(event:ResultEvent):void
		{

			remoteObjectJoursFeries.removeEventListener(ResultEvent.RESULT, listeJoursFeriesAnneeUnivObtenue);
			var listeJoursFeries:Array = (event.result as Array)
			sendNotification(LISTE_JOURS_FERIES_ANNEE_UNIV_OBTENUE, listeJoursFeries);
		}
		
		private function onFault(event:FaultEvent):void
		{
			trace("Fault");		
				
		}

	}
}